package com.zcxy.sys.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zcxy.core.bean.PageQuery;
import com.zcxy.sys.entity.SysRole;
import com.zcxy.sys.pojo.SysRoleVo;
import org.springframework.transaction.annotation.Transactional;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;


/**
 * 角色 Service接口
 *
 * @author zcc
 * @email 860474958@qq.com
 * @date 2020-06-02
 */
public interface ISysRoleService extends IService<SysRole> {
    /**
     * 角色：分页查询
     *
     * PageQuery<T>
     * @return Result<IPage < SysRoleVo>>
     */
    IPage<SysRoleVo> queryPageList(PageQuery<SysRole> queryVo);

    /**
     * 角色：复杂列表查询
     *
     * SysRole
     * @return List<SysRoleVo>
     */
    List<SysRoleVo> queryList();

    /**
     * 角色：新增
     *
     * SysRole
     * @return void
     */
    void addSysRole(SysRole queryVo);

    @Transactional(rollbackFor = Exception.class)
    void addSysRoleUser(List<String> userIds, String roleId);


    /**
     * 角色:更新
     *
     * SysRole
     * @return void
     */
    void updateSysRole(SysRole queryVo);

    /**
     * 角色:删除
     *
     * SysRole
     * @return void
     */
    void removeSysRole(String id);


    /**
     * 角色:删除
     *
     * @return void
     */
    void removeAllSysRole(List<String> ids);


    void download(SysRole queryVo, HttpServletResponse response) throws IOException;


    SysRoleVo viewSysRole(String id);
}
